home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2007 September / PCWSEP07.iso / Software / Linux / Linux Mint 3.0 Light / LinuxMint-3.0-Light.iso / casper / filesystem.squashfs / usr / lib / openoffice / program / pythonloader.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2007-04-29  |  4.0 KB  |  106 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.5)
  3.  
  4. import uno
  5. import unohelper
  6. import imp
  7. import os
  8. from com.sun.star.uno import Exception, RuntimeException
  9. from com.sun.star.loader import XImplementationLoader
  10. from com.sun.star.lang import XServiceInfo
  11. MODULE_PROTOCOL = 'vnd.openoffice.pymodule:'
  12. DEBUG = 0
  13. g_supportedServices = ('com.sun.star.loader.Python',)
  14. g_implementationName = 'org.openoffice.comp.pyuno.Loader'
  15.  
  16. def splitUrl(url):
  17.     nColon = url.find(':')
  18.     if -1 == nColon:
  19.         raise RuntimeException('PythonLoader: No protocol in url ' + url)
  20.     
  21.     return (url[0:nColon], url[nColon + 1:len(url)])
  22.  
  23. g_loadedComponents = { }
  24.  
  25. class Loader(XImplementationLoader, XServiceInfo, unohelper.Base):
  26.     
  27.     def __init__(self, ctx):
  28.         if DEBUG:
  29.             print 'pythonloader.Loader ctor'
  30.         
  31.         self.ctx = ctx
  32.  
  33.     
  34.     def getModuleFromUrl(self, url):
  35.         if DEBUG:
  36.             print 'pythonloader: interpreting url ' + url
  37.         
  38.         (protocol, dependent) = splitUrl(url)
  39.         if 'vnd.sun.star.expand' == protocol:
  40.             exp = self.ctx.getValueByName('/singletons/com.sun.star.util.theMacroExpander')
  41.             url = exp.expandMacros(dependent)
  42.             (protocol, dependent) = splitUrl(url)
  43.         
  44.         if DEBUG:
  45.             print 'pythonloader: after expansion ' + protocol + ':' + dependent
  46.         
  47.         
  48.         try:
  49.             if 'file' == protocol:
  50.                 url = unohelper.absolutize(url, url)
  51.                 mod = g_loadedComponents.get(url)
  52.                 if not mod:
  53.                     mod = imp.new_module('uno_component')
  54.                     fileHandle = file(unohelper.fileUrlToSystemPath(url))
  55.                     src = fileHandle.read()
  56.                     exec src in mod.__dict__
  57.                     g_loadedComponents[url] = mod
  58.                 
  59.                 return mod
  60.             elif 'vnd.openoffice.pymodule' == protocol:
  61.                 return __import__(dependent)
  62.             else:
  63.                 raise RuntimeException('PythonLoader: Unknown protocol ' + protocol + ' in url ' + url, self)
  64.         except ImportError:
  65.             e = None
  66.             raise RuntimeException("Couldn't load " + url + ' for reason ' + str(e), None)
  67.  
  68.  
  69.     
  70.     def activate(self, implementationName, dummy, locationUrl, regKey):
  71.         if DEBUG:
  72.             print 'pythonloader.Loader.activate'
  73.         
  74.         mod = self.getModuleFromUrl(locationUrl)
  75.         implHelper = mod.__dict__.get('g_ImplementationHelper', None)
  76.         if implHelper == None:
  77.             return mod.getComponentFactory(implementationName, self.ctx.ServiceManager, regKey)
  78.         else:
  79.             return implHelper.getComponentFactory(implementationName, regKey, self.ctx.ServiceManager)
  80.  
  81.     
  82.     def writeRegistryInfo(self, regKey, dummy, locationUrl):
  83.         if DEBUG:
  84.             print 'pythonloader.Loader.writeRegistryInfo'
  85.         
  86.         mod = self.getModuleFromUrl(locationUrl)
  87.         implHelper = mod.__dict__.get('g_ImplementationHelper', None)
  88.         if implHelper == None:
  89.             return mod.writeRegistryInfo(self.ctx.ServiceManager, regKey)
  90.         else:
  91.             return implHelper.writeRegistryInfo(regKey, self.ctx.ServiceManager)
  92.  
  93.     
  94.     def getImplementationName(self):
  95.         return g_implementationName
  96.  
  97.     
  98.     def supportsService(self, ServiceName):
  99.         return ServiceName in self.serviceNames
  100.  
  101.     
  102.     def getSupportedServiceNames(self):
  103.         return g_supportedServices
  104.  
  105.  
  106.